'use strict';

/**
 * 管理员回复反馈云函数
 * 处理管理员对用户反馈的回复和状态更新
 */
exports.main = async (event, context) => {
  console.log('event : ', event);
  
  // 获取数据库引用
  const db = uniCloud.database();
  const collection = db.collection('feedback');
  
  try {
    // 获取参数
    const {
      feedbackId,     // 反馈ID
      adminReply,     // 管理员回复内容
      status,         // 更新的状态
      priority,       // 更新的优先级
      tags           // 更新的标签
    } = event;
    
    // 参数验证
    if (!feedbackId) {
      return {
        code: 400,
        message: '反馈ID不能为空',
        data: null
      };
    }
    
    // 构建更新数据
    const updateData = {
      replyTime: new Date()
    };
    
    // 如果有回复内容
    if (adminReply && adminReply.trim()) {
      updateData.adminReply = adminReply.trim();
    }
    
    // 如果有状态更新
    if (status) {
      updateData.status = status;
    }
    
    // 如果有优先级更新
    if (priority) {
      updateData.priority = priority;
    }
    
    // 如果有标签更新
    if (tags && Array.isArray(tags)) {
      updateData.tags = tags;
    }
    
    // 执行更新
    const result = await collection.doc(feedbackId).update(updateData);
    
    if (result.updated > 0) {
      return {
        code: 200,
        message: '回复成功',
        data: {
          feedbackId: feedbackId,
          updated: result.updated
        }
      };
    } else {
      return {
        code: 404,
        message: '未找到对应的反馈记录',
        data: null
      };
    }
    
  } catch (error) {
    console.error('回复反馈失败:', error);
    
    return {
      code: 500,
      message: '服务器内部错误',
      data: null,
      error: error.message
    };
  }
};
